package com.betterman.utils;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 自定义响应数据结构
 * 				200：表示成功
 * 				500：表示错误，错误信息在msg字段中
 * 				501：bean验证错误，不管多少个错误都以map形式返回
 * 				502：拦截器拦截到用户token出错
 * 				555：异常抛出信息
 *
 * @author fox
 * @version V1.0
 */
@ApiModel("响应数据结构")
@Data
public class JSONResult {

    @ApiModelProperty("响应业务状态")
    private Integer status;

    @ApiModelProperty("响应消息")
    private String msg;

    @ApiModelProperty("响应中的数据")
    private Object data;


    public static JSONResult build(Integer status, String msg, Object data) {
        return new JSONResult(status, msg, data);
    }

    public static JSONResult ok(Object data) {
        return new JSONResult(200, "请求成功", data);
    }

    public static JSONResult ok() {
        return ok(null);
    }

    public static JSONResult fail(String msg) {
        return new JSONResult(500, msg, null);
    }

    public static JSONResult errorMsg(String msg) {
        return new JSONResult(500, msg, null);
    }


    public static JSONResult expireToken(String msg) {
        return new JSONResult(422, msg, null);
    }


    public JSONResult() {
    }

    public JSONResult(Integer status, String msg, Object data) {
        this.status = status;
        this.msg = msg;
        this.data = data;
    }
}
